package com.smartleanx.module.hrm.controller.admin.payroll.vo;

import com.smartleanx.framework.common.pojo.PageParam;
import com.smartleanx.framework.common.validation.InEnum;
import com.smartleanx.module.hrm.eums.employee.EmployeeStatusEnum;
import com.smartleanx.module.hrm.eums.payroll.PayrollSendStatusEnum;
import com.smartleanx.module.system.enums.customfield.CustomFieldLabelEnum;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;

import javax.validation.constraints.NotNull;
import java.util.Collection;
import java.util.List;

@Schema(description = "管理后台 - 薪资详情分页 Request VO")
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class PayrollDetailPageReqVO extends PageParam {

    @Schema(description = "搜索关键字", example = "1526")
    private String keyword;

    @Schema(description = "员工姓名", example = "1526")
    private String employeeName;

    @Schema(description = "部门ID", example = "1526")
    private Long deptId;

    @Schema(description = "员工状态", example = "1526")
    @InEnum(value = EmployeeStatusEnum.class, message = "员工状态格式非法")
    private Integer employeeState;

    @Schema(description = "标签", example = "1526")
    @InEnum(value = CustomFieldLabelEnum.class, message = "标签页格式非法")
    private List<Integer> labels;

    private Collection<Long> employeeIds;

    @Schema(description = "薪资月份ID", example = "1526")
    @NotNull(message = "薪资月份ID不能为空")
    private Long payrollId;

    @Schema(description = "发送状态", example = "1526")
    @InEnum(value = PayrollSendStatusEnum.class, message = "发送状态格式非法")
    private List<Integer> sendStatuses;

    @Schema(description = "确认状态", example = "1526")
    private Boolean confirmStatus;

    @Schema(description = "是否归档", example = "1526")
    private Boolean archived;

    @Schema(description = "页面", example = "1526")
    @InEnum(value = CustomFieldLabelEnum.class, message = "页面格式非法")
    private Integer webPage;
}